package com.example.demo.concurrent.SingletonTest;

/**
 * 懒汉式
 */
public class Singleton3 {

    private Singleton3() {
        System.out.println("Singleton3()");
    }

    private static Singleton3 INSTANCE =null;
    // 分析这里的线程安全, 并说明有什么缺点
    //加载类对象上,可以保证线程安全问题
    //锁的范围比较大,每一次创建实例都需要加锁
    public synchronized Singleton3 getInstance() {
        if(INSTANCE == null) {
            INSTANCE = new Singleton3();
        }
        return INSTANCE;
    }
}